/* $Id: NonClientCompanyDomainObjectManager.java 
 * Copyright (C) 2011, TRAKHEES
 *  
 * Revision History
 *
 * Date  			Author 		    	Remarks
 * ---------------------------------------------------------------------------------
 *
 */
package ae.pcfc.etks.online.common.domain.manager;

import ae.pcfc.etks.online.common.domain.ClientCompanyReq;
import ae.pcfc.etks.online.common.exception.LookupException;
import ae.pcfc.etks.online.common.exception.PersistenceException;
import ae.pcfc.etks.online.common.vo.LicenseVO;

public interface NonClientCompanyDomainObjectManager extends
		BaseDomainObjectManager {

	/**
	 * add
	 * Method to add client company request
	 * @param clientCompanyReq
	 * @return
	 * @throws PersistenceException
	 * String
	 */
	public String add(ClientCompanyReq clientCompanyReq)
			throws PersistenceException;

	/**
	 * getNonClientCompanyByApplicationId
	 * Method to find non client company request by application id
	 * @param applicationId
	 * @return
	 * @throws LookupException
	 * ClientCompanyReq
	 */
	public ClientCompanyReq getNonClientCompanyByApplicationId(
			String applicationId) throws LookupException;

	/**
	 * validateLicenseReq
	 * Method to validate license number
	 * @param licenseVO
	 * @return
	 * @throws LookupException
	 * boolean
	 */
	public boolean validateLicenseReq(LicenseVO licenseVO)
			throws LookupException;

	/**
	 * getNonClientCompanyByEmail
	 * Method to find the non client company request by email address 
	 * @param email
	 * @return
	 * ClientCompanyReq
	 */
	public ClientCompanyReq getNonClientCompanyByEmail(String email);

	/**
	 * getNonClientCompanyByPropertyName
	 * Method to find non client company request by property
	 * @param propertyName
	 * @param propertyValue
	 * @return
	 * ClientCompanyReq
	 */
	public ClientCompanyReq getNonClientCompanyByPropertyName(
			String propertyName, String propertyValue);

	/**
	 * validateByPropertyName
	 * Method to validate non client company request by property
	 * @param strPropertyName
	 * @param strPropertyValue
	 * @return
	 * boolean
	 */
	public boolean validateByPropertyName(String strPropertyName,
			String strPropertyValue);
}
